<?php

App::uses('AppController', 'Controller');

/**
 * Cortestubos Controller
 *
 * @property Cortestubo $Cortestubo
 */
class CortestubosController extends AppController {

    public $uses = array('Cortestubo', 'Tubo', 'Movimientostubo', 'Categoria');
    public $layout = 'imprenta';

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow();
    }

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        $this->Cortestubo->recursive = 0;
        $this->set('cortestubos', $this->paginate());
    }

    public function ajaxverarbol($idTuboCortado = null) {
        $ct = $this->Cortestubo->find('first', array('conditions' => array('Cortestubo.id' => $idTuboCortado)));
        $ca = $this->Tubo->find('first', array('conditions' => array('Tubo.id' => $ct['Cortestubo']['tubo_id'])));
        $categoria = $ct['Tubo']['categoria_id'];
        //debug($categoria);exit;
        $this->layout = 'ajax';
        $arbol = $this->Cortestubo->getPath($idTuboCortado);
        //debug($arbol);
        $this->set(compact('arbol', 'categoria'));
    }

    public function registrasubcortes() {
        //debug($this->request->data);
        //die;
        //$catego = $this->request->data['Cortestubo']['ca'];
        $categoria = $this->request->data['Cortestubo']['0']['categoria'];

        //$categoria = $this->request->data['Tubo']['categoria'];

        switch ($categoria) {

            case 18:
                $prefijo = 'L';
                $final = 'M';
                break;

            case 19:
                $prefijo = 'B';
                $final = 'C';
                break;

            case 20:
                $prefijo = 'P';
                $final = 'M';
                break;

            default:
                break;
        }
        //debug($catego);exit;
        $tuboPadre = $this->request->data['Cortestubo'][0]['tubo_id'];
        $datosCortes = $this->request->data;
        $idTuboPrincipal = $this->Cortestubo->find('first', array('recursive' => -1, 'conditions' => array('Cortestubo.id' => $datosCortes['Cortestubo'][0]['tubo_id'])));
        $valorIdTuboPrincipal = $idTuboPrincipal['Cortestubo']['tubo_id'];

        $data = array('id' => $tuboPadre, 'estado' => 'P');
        $this->Cortestubo->save($data);
        //debug($idTuboPrincipal);die;
        //debug($datosCortes);
        $this->request->data = "";

        //$c = 0;
        for ($i = 0; $i < count($datosCortes['Cortestubo']); $i++) {
            //debug($dc);
            //debug($c);
            $altoTubo = $datosCortes['Cortestubo'][$i]['alto'];
            $pesoTubo = $datosCortes['Cortestubo'][$i]['peso'];
            $idTubo = $datosCortes['Cortestubo'][$i]['tubo_id'];

            //debug($altoTubo);

            if (!empty($pesoTubo)) {
                $this->request->data['Cortestubo']['tubo_id'] = $valorIdTuboPrincipal;
                $this->request->data['Cortestubo']['parent_id'] = $idTubo;
                $this->request->data['Cortestubo']['alto'] = $altoTubo;
                $this->request->data['Cortestubo']['peso'] = $pesoTubo;
                $this->request->data['Cortestubo']['sucursale_id'] = 6;
                $this->request->data['Cortestubo']['estado'] = "C";
                $this->request->data['Cortestubo']['categoria_id'] = $categoria;
                //debug($this->request->data);
                //die;
                $this->Cortestubo->create();
                if ($this->Cortestubo->save($this->request->data)) {
                    $ultimoCorteRegistrado = $this->Cortestubo->getLastInsertID();
                    $data = array('id' => $ultimoCorteRegistrado, 'codigo' => $prefijo . $ultimoCorteRegistrado . $final);
                    $this->Cortestubo->save($data);
                    //$this->redirect(array('controller'=>'Tubos','action'=>'verdetalle',$valorIdTuboPrincipal));
                }
                //$c++;
            }
        }
        $this->redirect($this->referer());
        /*$this->redirect(array(
            'controller' => 'Tubos',
            'action' => 'verdetalle',
            $valorIdTuboPrincipal));*/
    }

    public function registracortes() {
        $sw = true;
        //debug($this->request->data);
        //die;
        //$catego = $this->request->data['Cortestubos']['ca'];
        //debug($catego);exit;
        $codigoTubo = $this->request->data['Tubo']['codigo'];
        $idTubo = $this->request->data['Tubo']['tubo_id'];
        $categoria = $this->request->data['Tubo']['categoria'];

        switch ($categoria) {

            case 18:
                $prefijo = 'L';
                $final = 'M';
                break;

            case 19:
                $prefijo = 'B';
                $final = 'C';
                break;

            case 20:
                $prefijo = 'P';
                $final = 'M';
                break;

            default:
                break;
        }

        $verUltimoMovimientosTubo = $this->Movimientostubo->find('first', array(
            'recursive' => -1,
            'conditions' => array('Movimientostubo.tubo_id' => $idTubo),
            'order' => array('Movimientostubo.id DESC')));

        $cantidadActualTubo = $verUltimoMovimientosTubo['Movimientostubo']['cantidad'];
        $restoTubo = $cantidadActualTubo - 1;
        $datosTubo = $this->Tubo->find('first', array('recursive' => -1, 'conditions' => array('Tubo.id' => $idTubo)));

        $this->request->data['Movimientostubo']['salida'] = 1;
        $this->request->data['Movimientostubo']['ingreso'] = 0;
        $this->request->data['Movimientostubo']['cantidad'] = $restoTubo;
        $this->request->data['Movimientostubo']['estado'] = 'P';
        $this->request->data['Movimientostubo']['sucursale_id'] = 6;
        $this->request->data['Movimientostubo']['codigo'] = $prefijo . $codigoTubo;
        $this->request->data['Movimientostubo']['categoria_id'] = $categoria;
        $this->request->data['Movimientostubo']['tubo_id'] = $idTubo;

        //debug($this->request->data['Movimientostubo']);

        $this->Movimientostubo->create();
        $this->Movimientostubo->save($this->request->data['Movimientostubo']);
        //debug($verMovimientosTubo);die;
        //$datosTubo = $this->Tubo->find('first', array('recursive' => -1, 'conditions' => array('Tubo.id' => $idTubo)));

        $datosCortes = $this->request->data['Cortestubos'];
        //debug($datosCortes);exit;

        $this->request->data['nCortestubo']['largo'] = $datosTubo['Tubo']['largo'];
        $this->request->data['nCortestubo']['alto'] = $datosTubo['Tubo']['alto'];
        $this->request->data['nCortestubo']['peso'] = $datosTubo['Tubo']['peso'];
        $this->request->data['nCortestubo']['codigo'] = $prefijo . $codigoTubo;
        $this->request->data['nCortestubo']['tubo_id'] = $idTubo;
        $this->request->data['nCortestubo']['sucursale_id'] = 6;
        $this->request->data['nCortestubo']['categoria_id'] = $categoria;
        //debug($this->request->data['nCortestubo']);exit;
        $this->Cortestubo->create();
        if ($this->Cortestubo->save($this->request->data['nCortestubo'])) {
            $ultimoCorte = $this->Cortestubo->getLastInsertID();

            foreach ($datosCortes as $dc) {
                $this->request->data['Cortestubo']['tubo_id'] = $idTubo;
                $this->request->data['Cortestubo']['parent_id'] = $ultimoCorte;
                $this->request->data['Cortestubo']['largo'] = 0;
                $this->request->data['Cortestubo']['alto'] = $dc['alto'];
                $this->request->data['Cortestubo']['peso'] = $dc['peso'];
                $this->request->data['Cortestubo']['sucursale_id'] = 6;
                $this->request->data['Cortestubo']['estado'] = 'C';
                $this->request->data['Cortestubo']['categoria_id'] = $categoria;
                //debug($this->request->data['Cortestubo']);exit;
                $this->Cortestubo->create();

                if ($this->Cortestubo->save($this->request->data['Cortestubo'])) {
                    $ultimoCorteRegistrado = $this->Cortestubo->getLastInsertID();
                    $data = array('id' => $ultimoCorteRegistrado, 'codigo' => $prefijo . $ultimoCorteRegistrado . $final);
                    $this->Cortestubo->save($data);
                }
            }
            $this->redirect(array(
                'controller' => 'Tubos',
                'action' => 'verdetalle',
                $idTubo));
        }
    }

    public function muestrarbol() {
        $todosLosHijos = $this->Cortestubo->children(19);
        $cuantosHijos = $this->Cortestubo->childCount(19);
        $papa = $this->Cortestubo->getparentnode(20);
        //debug($todosLosHijos);
        debug($papa);
    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function view($id = null) {
        if (!$this->Cortestubo->exists($id)) {
            throw new NotFoundException(__('Invalid cortestubo'));
        }
        $options = array('conditions' => array('Cortestubo.' . $this->Cortestubo->primaryKey => $id));
        $this->set('cortestubo', $this->Cortestubo->find('first', $options));
    }

    /**
     * add method
     *
     * @return void
     */
    public function add() {
        if ($this->request->is('post')) {
            $this->Cortestubo->create();
            if ($this->Cortestubo->save($this->request->data)) {
                $this->flash(__('Cortestubo saved.'), array('action' => 'index'));
            } else {
                
            }
        }
        $tubos = $this->Cortestubo->Tubo->find('list');
        $this->set(compact('tubos'));
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function edit($id = null) {
        
        $ct = $this->Cortestubo->find('first', array('conditions' => array('Cortestubo.id' => $id)));
        $ca = $this->Tubo->find('first', array('conditions' => array('Tubo.id' => $ct['Cortestubo']['tubo_id'])));
        $categoria = $ct['Tubo']['categoria_id'];
        //debug($categoria);exit;
        if (!$this->Cortestubo->exists($id)) {
            throw new NotFoundException(__('Invalid cortestubo'));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            $datosCorte = $this->Cortestubo->find('first', array(
                'recursive' => 0,
                'conditions' => array('Cortestubo.id' => $id)
            ));
            $this->Cortestubo->id = $id;
            if ($this->Cortestubo->save($this->request->data)) {
                //$this->flash('Corte editado', array('controller'=>'tubo', 'action' => 'index', $datosCorte['Tubo']['id']));
                $this->Session->setFlash('Corte Editado Correctamente');                
                $this->redirect(array('controller' => 'Tubos', 'action' => 'listado', $categoria));
            } else {
                
            }
        } else {
            $datosCorte = $this->Cortestubo->find('first', array(
                'recursive' => 0,
                'conditions' => array('Cortestubo.id' => $id)
            ));
            $this->request->data = $datosCorte;
        }
        $this->set(compact('datosCorte', 'categoria'));
    }

    /**
     * delete method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function delete($id = null) {
        $this->Cortestubo->id = $id;
        if (!$this->Cortestubo->exists()) {
            throw new NotFoundException(__('Invalid cortestubo'));
        }
        $this->request->onlyAllow('post', 'delete');
        if ($this->Cortestubo->delete()) {
            $this->flash(__('Cortestubo deleted'), array('action' => 'index'));
        }
        $this->flash(__('Cortestubo was not deleted'), array('action' => 'index'));
        $this->redirect(array('action' => 'index'));
    }

    public function sacarbobina() {
        //debug($this->request->data);die;
        $idCorteTubo = $this->request->data['Cortestubos']['tubo_id'];
        $sucursal = $this->request->data['Cortestubos']['sucursale_id'];
        $movil = $this->request->data['Cortestubos']['movil'];
        $datosBobina = $this->Cortestubo->find('first', array('recursive' => -1, 'conditions' => array('Cortestubo.id' => $idCorteTubo)));

        $data = array('id' => $idCorteTubo, 'sucursale_id' => $sucursal);
        if ($this->Cortestubo->save($data)) {
            if ($movil == 'S') {
                $this->redirect(array(
                    'controller' => 'Movil',
                    'action' => 'producto',
                    $idCorteTubo));
            } else {
                $this->redirect($this->referer());
                /*$this->redirect(array(
                    'controller' => 'Tubos',
                    'action' => 'verdetalle',
                    $datosBobina['Cortestubo']['tubo_id']));*/
            }
        }
        //$this->request->data['Cortestubos']['tubo_id']=$datosBobina['Cortestubo']['tubo_id'];
        //$this->request->data['Cortestubos']['tubo_id']=$datosBobina['Cortestubo']['tubo_id'];
        //debug($datosBobina);die;
    }

    public function ajaxregulariza() {

        $idSucursalUsuario = $this->Session->read('Auth.User.Sucursale.id');
        $this->layout = 'ajax';
        //debug($this->request->data);exit;
        $categoria = $this->request->data['Cortestubos']['categoria'];
        if (empty($this->request->data['Cortestubos']['prestado'])) {
            $prestado = 'N';
        } else {
            $prestado = 'Y';
        }
        $this->request->data['Cortestubo']['tubo_id'] = $this->request->data['Cortestubos']['tubo_id'];
        $this->request->data['Cortestubo']['prestado'] = $prestado;
        $this->request->data['Cortestubo']['quienpresto'] = $this->request->data['Cortestubos']['quienpresto'];
        $this->request->data['Cortestubo']['sucursale_id'] = $idSucursalUsuario;
        $this->request->data['Cortestubo']['alto'] = $this->request->data['Cortestubos']['alto'];
        $this->request->data['Cortestubo']['peso'] = $this->request->data['Cortestubos']['peso'];
        $this->request->data['Cortestubo']['estado'] = 'C';
        $this->request->data['Cortestubo']['categoria_id'] = $categoria;
        //debug($this->request->data);
        $this->Cortestubo->create();
        if ($this->Cortestubo->save($this->request->data['Cortestubo'])) {
            $codigoTubo = $this->Cortestubo->getLastInsertID();
            if ($categoria == 18) {
                $codigoGenerado = 'L' . $codigoTubo . 'M';
            }
            if ($categoria == 19) {
                $codigoGenerado = 'B' . $codigoTubo . 'C';
            }
            if ($categoria == 20) {
                $codigoGenerado = 'P' . $codigoTubo . 'M';
            }


            $data = array('id' => $codigoTubo, 'codigo' => $codigoGenerado);
            $this->Cortestubo->save($data);
            $this->Session->setFlash("El codigo para el tubo es <strong>$codigoGenerado</strong>", 'msgbueno');
            $this->redirect(array('controller' => 'Tubos', 'action' => 'index', $categoria));
            $this->set(compact('codigoTubo'));
        } else {
            echo 'No se pudo registrar';
        }
    }

    public function venderbobina() {
        //debug($this->request->data);die;
        $idTubo = $this->request->data['Cortestubos']['tubo_id'];
        $idCorteTubo = $this->request->data['Cortestubos']['cortestubo_id'];
        //$this->request->data['Cortestubo']['']
        $this->Cortestubo->read(null, $idCorteTubo);
        $this->Cortestubo->set(array(
            'cliente' => $this->request->data['Cortestubos']['cliente'],
            'precio' => $this->request->data['Cortestubos']['precio'],
            'propietario' => $this->request->data['Cortestubos']['propietario'],
            'ne' => $this->request->data['Cortestubos']['ne'],
            'nv' => $this->request->data['Cortestubos']['nv'],
            'estado' => 'V'));
        if ($this->Cortestubo->save()) {
            $this->Session->setFlash('Bobina Vendida');
            $this->redirect(array('controller' => 'Cortestubos', 'action' => 'imprimirventa', $idCorteTubo, $idTubo));
        }
    }

    public function imprimirventa($idCorteTubo = null, $idTubo = null) {
        $nota = $this->Cortestubo->find('first', array('conditions' => array('Cortestubo.id' => $idCorteTubo)));
        $idcategoria = $nota['Cortestubo']['categoria_id'];
        $this->set(compact('nota', 'idTubo', 'idcategoria'));
    }

    public function detalle() {
        $movimientocortes = $this->Cortestubo->find('all', array('conditions' => array('Cortestubo.prestado' => 'Y')));
        $this->set(compact('movimientocortes'));
        //debug($movimientocortes);exit;
    }

    public function qr($idProducto = null) {
        $datosProducto = $this->Cortestubo->find('first', array(
            'recursive' => 0,
            'conditions' => array('Cortestubo.id' => $idProducto)
        ));
        //debug($datosProducto);
        $this->set(compact('datosProducto'));
    }

}
